home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Slots.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  13.2 KB  |  360 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Slots.mod
  3.  
  4.      Contains:    Slot Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE Slots;
  23.  
  24. IMPORT SYSTEM, Types, Files;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. CONST
  31.     fCardIsChanged*                = 1;                            (*Card is Changed field in StatusFlags field of sInfoArray*)
  32.     fCkForSame*                    = 0;                            (*For SearchSRT. Flag to check for SAME sResource in the table. *)
  33.     fCkForNext*                    = 1;                            (*For SearchSRT. Flag to check for NEXT sResource in the table. *)
  34.     fWarmStart*                    = 2;                            (*If this bit is set then warm start else cold start.*)
  35.     stateNil*                    = 0;                            (*State*)
  36.     stateSDMInit*                = 1;                            (*():Slot declaration manager Init*)
  37.     statePRAMInit*                = 2;                            (*():sPRAM record init*)
  38.     statePInit*                    = 3;                            (*():Primary init*)
  39.     stateSInit*                    = 4;                            (*():Secondary init*)
  40. (* flags for spParamData *)
  41.     fall*                        = 0;                            (* bit 0: set=search enabled/disabled sRsrc's *)
  42.     foneslot*                    = 1;                            (*    1: set=search sRsrc's in given slot only *)
  43.     fnext*                        = 2;                            (*    2: set=search for next sRsrc *)
  44.  
  45. TYPE
  46.     (*
  47.         SlotIntServiceProcPtr uses register based parameters on the 68k and cannot
  48.         be written in or called from a high-level language without the help of
  49.         mixed mode or assembly glue.
  50.  
  51.         In*:
  52.          => sqParameter     A1.L
  53.         Out*:
  54.          <= return value    D0.W
  55.     *)
  56.     SlotIntServiceProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE SlotIntService*(sqParameter: LONGINT): INTEGER; *)
  57.     SlotIntServiceUPP* = Types.UniversalProcPtr;
  58.  
  59. CONST
  60.     uppSlotIntServiceProcInfo* = $0000B822; (* Register PROCEDURE (4 bytes in A1): 2 bytes in D0; *)
  61.  
  62. PROCEDURE NewSlotIntServiceProc*(userRoutine: SlotIntServiceProcPtr): SlotIntServiceUPP;
  63.     (*$IF NOT GENERATINGCFM *)
  64.     INLINE PASCAL $2E9F;
  65.     (*$END*)
  66.  
  67. PROCEDURE CallSlotIntServiceProc*(sqParameter: LONGINT; userRoutine: SlotIntServiceUPP): INTEGER;
  68.     (*$IF NOT GENERATINGCFM*)
  69.     INLINE PASCAL ; (*••*)
  70.     (*To be implemented*:  Glue to move parameters into registers.*)
  71.     (*$END*)
  72.  
  73. TYPE
  74.     SlotIntQElement* = RECORD
  75.         sqLink*:                    Types.Ptr;                                    (*ptr to next element*)
  76.         sqType*:                    INTEGER;                                (*queue type AIFF.ID for validity*)
  77.         sqPrio*:                    INTEGER;                                (*priority*)
  78.         sqAddr*:                    SlotIntServiceUPP;                        (*interrupt service routine*)
  79.         sqParm*:                    LONGINT;                                (*optional A1 parameter*)
  80.     END;
  81.  
  82.     SQElemPtr* = POINTER TO SlotIntQElement;
  83.  
  84.     SpBlock* = RECORD
  85.         spResult*:                LONGINT;                                (*PROCEDURE Result**)
  86.         spsPointer*:                Types.Ptr;                                    (*structure pointer*)
  87.         spSize*:                    LONGINT;                                (*size of structure*)
  88.         spOffsetData*:            LONGINT;                                (*offset/data field used by sOffsetData*)
  89.         spIOFileName*:            Types.Ptr;                                    (*ptr to IOFile name for sDisDrvrName*)
  90.         spsExecPBlk*:            Types.Ptr;                                    (*pointer to sExec parameter block.*)
  91.         spParamData*:            LONGINT;                                (*misc parameter data (formerly spStackPtr).*)
  92.         spMisc*:                    LONGINT;                                (*misc field for SDM.*)
  93.         spReserved*:                LONGINT;                                (*reserved for future expansion*)
  94.         spIOReserved*:            INTEGER;                                (*Reserved field of Slot Resource Table*)
  95.         spRefNum*:                INTEGER;                                (*RefNum*)
  96.         spCategory*:                INTEGER;                                (*sType: Category*)
  97.         spCType*:                INTEGER;                                (*Type*)
  98.         spDrvrSW*:                INTEGER;                                (*DrvrSW*)
  99.         spDrvrHW*:                INTEGER;                                (*DrvrHW*)
  100.         spTBMask*:                Types.SInt8;                                    (*type bit mask bits 0..3 mask words 0..3*)
  101.         spSlot*:                    Types.SInt8;                                    (*slot number*)
  102.         spID*:                    Types.SInt8;                                    (*structure AIFF.ID*)
  103.         spExtDev*:                Types.SInt8;                                    (*AIFF.ID of the external device*)
  104.         spHwDev*:                Types.SInt8;                                    (*Id of the hardware device.*)
  105.         spByteLanes*:            Types.SInt8;                                    (*bytelanes from card ROM format block*)
  106.         spFlags*:                Types.SInt8;                                    (*standard flags*)
  107.         spKey*:                    Types.SInt8;                                    (*Internal use only*)
  108.     END;
  109.  
  110.     SpBlockPtr* = POINTER TO SpBlock;
  111.  
  112.     SInfoRecord* = RECORD
  113.         siDirPtr*:                Types.Ptr;                                    (*Pointer to directory*)
  114.         siInitStatusA*:            INTEGER;                                (*initialization E*)
  115.         siInitStatusV*:            INTEGER;                                (*status returned by vendor init code*)
  116.         siState*:                Types.SInt8;                                    (*initialization state*)
  117.         siCPUByteLanes*:            Types.SInt8;                                    (*0=[d0..d7] 1=[d8..d15]*)
  118.         siTopOfROM*:                Types.SInt8;                                    (*Top of ROM= $FssFFFFx: x is TopOfROM*)
  119.         siStatusFlags*:            Types.SInt8;                                    (*bit 0 - card is changed*)
  120.         siTOConst*:                INTEGER;                                (*Sound.Time Out C for BusErr*)
  121.         siReserved*:                ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF Types.SInt8;                    (*reserved*)
  122.         siROMAddr*:                Types.Ptr;                                    (* addr of top of ROM *)
  123.         siSlot*:                    Types.SInt8;                                    (* slot number *)
  124.         siPadding*:                ARRAY 3 (*ΔΔ[0..2]ΔΔ*) OF Types.SInt8;                    (* reserved *)
  125.     END;
  126.  
  127.     SInfoRecPtr* = POINTER TO SInfoRecord;
  128.  
  129.     SDMRecord* = RECORD
  130.         sdBEVSave*:                Types.ProcPtr;                                (*Save old BusErr vector*)
  131.         sdBusErrProc*:            Types.ProcPtr;                                (*Go here to determine if it is a BusErr*)
  132.         sdErrorEntry*:            Types.ProcPtr;                                (*Go here if BusErrProc finds real BusErr*)
  133.         sdReserved*:                LONGINT;                                (*Reserved*)
  134.     END;
  135.  
  136.     FHeaderRec* = RECORD
  137.         fhDirOffset*:            LONGINT;                                (*offset to directory*)
  138.         fhLength*:                LONGINT;                                (*length of ROM*)
  139.         fhCRC*:                    LONGINT;                                (*CRC*)
  140.         fhROMRev*:                Types.SInt8;                                    (*revision of ROM*)
  141.         fhFormat*:                Types.SInt8;                                    (*format - 2*)
  142.         fhTstPat*:                LONGINT;                                (*test pattern*)
  143.         fhReserved*:                Types.SInt8;                                    (*reserved*)
  144.         fhByteLanes*:            Types.SInt8;                                    (*ByteLanes*)
  145.     END;
  146.  
  147.     FHeaderRecPtr* = POINTER TO FHeaderRec;
  148.  
  149.     SEBlock* = (*ΔΔPACKEDΔΔ*) RECORD
  150.         seSlot*:                    Types.UInt8;                                    (*Slot number.*)
  151.         sesRsrcId*:                Types.UInt8;                                    (*sResource Id.*)
  152.         seStatus*:                INTEGER;                                (*Status of code executed by sExec.*)
  153.         seFlags*:                Types.UInt8;                                    (*Flags*)
  154.         seFiller0*:                Types.UInt8;                                    (*Filler, must be Types.SignedByte to align on odd boundry*)
  155.         seFiller1*:                Types.UInt8;                                    (*Filler*)
  156.         seFiller2*:                Types.UInt8;                                    (*Filler*)
  157.         seResult*:                LONGINT;                                (*Result of sLoad.*)
  158.         seIOFileName*:            LONGINT;                                (*Pointer to IOFile name.*)
  159.         seDevice*:                Types.UInt8;                                    (*Which device to read from.*)
  160.         sePartition*:            Types.UInt8;                                    (*The partition.*)
  161.         seOSType*:                Types.UInt8;                                    (*Type of OS.*)
  162.         seReserved*:                Types.UInt8;                                    (*Reserved field.*)
  163.         seRefNum*:                Types.UInt8;                                    (*RefNum of the driver.*)
  164.         seNumDevices*:            Types.UInt8;                                    (* Number of devices to load.*)
  165.         seBootState*:            Types.UInt8;                                    (*State of StartBoot code.*)
  166.     END;
  167.  
  168. (*  Principle  *)
  169.  
  170. PROCEDURE SReadByte*(spBlkPtr: SpBlockPtr): Types.OSErr;
  171.     (*$IF NOT GENERATINGCFM*)
  172.     INLINE PASCAL $205F, $7000, $A06E, $3E80;
  173.     (*$END*)
  174. PROCEDURE SReadWord*(spBlkPtr: SpBlockPtr): Types.OSErr;
  175.     (*$IF NOT GENERATINGCFM*)
  176.     INLINE PASCAL $205F, $7001, $A06E, $3E80;
  177.     (*$END*)
  178. PROCEDURE SReadLong*(spBlkPtr: SpBlockPtr): Types.OSErr;
  179.     (*$IF NOT GENERATINGCFM*)
  180.     INLINE PASCAL $205F, $7002, $A06E, $3E80;
  181.     (*$END*)
  182. PROCEDURE SGetCString*(spBlkPtr: SpBlockPtr): Types.OSErr;
  183.     (*$IF NOT GENERATINGCFM*)
  184.     INLINE PASCAL $205F, $7003, $A06E, $3E80;
  185.     (*$END*)
  186. PROCEDURE SGetBlock*(spBlkPtr: SpBlockPtr): Types.OSErr;
  187.     (*$IF NOT GENERATINGCFM*)
  188.     INLINE PASCAL $205F, $7005, $A06E, $3E80;
  189.     (*$END*)
  190. PROCEDURE SFindStruct*(spBlkPtr: SpBlockPtr): Types.OSErr;
  191.     (*$IF NOT GENERATINGCFM*)
  192.     INLINE PASCAL $205F, $7006, $A06E, $3E80;
  193.     (*$END*)
  194. PROCEDURE SReadStruct*(spBlkPtr: SpBlockPtr): Types.OSErr;
  195.     (*$IF NOT GENERATINGCFM*)
  196.     INLINE PASCAL $205F, $7007, $A06E, $3E80;
  197.     (*$END*)
  198. (*  Special  *)
  199. PROCEDURE SReadInfo*(spBlkPtr: SpBlockPtr): Types.OSErr;
  200.     (*$IF NOT GENERATINGCFM*)
  201.     INLINE PASCAL $205F, $7010, $A06E, $3E80;
  202.     (*$END*)
  203. PROCEDURE SReadPRAMRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
  204.     (*$IF NOT GENERATINGCFM*)
  205.     INLINE PASCAL $205F, $7011, $A06E, $3E80;
  206.     (*$END*)
  207. PROCEDURE SPutPRAMRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
  208.     (*$IF NOT GENERATINGCFM*)
  209.     INLINE PASCAL $205F, $7012, $A06E, $3E80;
  210.     (*$END*)
  211. PROCEDURE SReadFHeader*(spBlkPtr: SpBlockPtr): Types.OSErr;
  212.     (*$IF NOT GENERATINGCFM*)
  213.     INLINE PASCAL $205F, $7013, $A06E, $3E80;
  214.     (*$END*)
  215. PROCEDURE SNextSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
  216.     (*$IF NOT GENERATINGCFM*)
  217.     INLINE PASCAL $205F, $7014, $A06E, $3E80;
  218.     (*$END*)
  219. PROCEDURE SNextTypeSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
  220.     (*$IF NOT GENERATINGCFM*)
  221.     INLINE PASCAL $205F, $7015, $A06E, $3E80;
  222.     (*$END*)
  223. PROCEDURE SRsrcInfo*(spBlkPtr: SpBlockPtr): Types.OSErr;
  224.     (*$IF NOT GENERATINGCFM*)
  225.     INLINE PASCAL $205F, $7016, $A06E, $3E80;
  226.     (*$END*)
  227. PROCEDURE SCkCardStat*(spBlkPtr: SpBlockPtr): Types.OSErr;
  228.     (*$IF NOT GENERATINGCFM*)
  229.     INLINE PASCAL $205F, $7018, $A06E, $3E80;
  230.     (*$END*)
  231. PROCEDURE SReadDrvrName*(spBlkPtr: SpBlockPtr): Types.OSErr;
  232.     (*$IF NOT GENERATINGCFM*)
  233.     INLINE PASCAL $205F, $7019, $A06E, $3E80;
  234.     (*$END*)
  235. PROCEDURE SFindDevBase*(spBlkPtr: SpBlockPtr): Types.OSErr;
  236.     (*$IF NOT GENERATINGCFM*)
  237.     INLINE PASCAL $205F, $701B, $A06E, $3E80;
  238.     (*$END*)
  239. PROCEDURE SFindBigDevBase*(spBlkPtr: SpBlockPtr): Types.OSErr;
  240.     (*$IF NOT GENERATINGCFM*)
  241.     INLINE PASCAL $205F, $701C, $A06E, $3E80;
  242.     (*$END*)
  243. (*  Advanced  *)
  244. PROCEDURE InitSDeclMgr*(spBlkPtr: SpBlockPtr): Types.OSErr;
  245.     (*$IF NOT GENERATINGCFM*)
  246.     INLINE PASCAL $205F, $7020, $A06E, $3E80;
  247.     (*$END*)
  248. PROCEDURE SPrimaryInit*(spBlkPtr: SpBlockPtr): Types.OSErr;
  249.     (*$IF NOT GENERATINGCFM*)
  250.     INLINE PASCAL $205F, $7021, $A06E, $3E80;
  251.     (*$END*)
  252. PROCEDURE SCardChanged*(spBlkPtr: SpBlockPtr): Types.OSErr;
  253.     (*$IF NOT GENERATINGCFM*)
  254.     INLINE PASCAL $205F, $7022, $A06E, $3E80;
  255.     (*$END*)
  256. PROCEDURE SExec*(spBlkPtr: SpBlockPtr): Types.OSErr;
  257.     (*$IF NOT GENERATINGCFM*)
  258.     INLINE PASCAL $205F, $7023, $A06E, $3E80;
  259.     (*$END*)
  260. PROCEDURE SOffsetData*(spBlkPtr: SpBlockPtr): Types.OSErr;
  261.     (*$IF NOT GENERATINGCFM*)
  262.     INLINE PASCAL $205F, $7024, $A06E, $3E80;
  263.     (*$END*)
  264. PROCEDURE SInitPRAMRecs*(spBlkPtr: SpBlockPtr): Types.OSErr;
  265.     (*$IF NOT GENERATINGCFM*)
  266.     INLINE PASCAL $205F, $7025, $A06E, $3E80;
  267.     (*$END*)
  268. PROCEDURE SReadPBSize*(spBlkPtr: SpBlockPtr): Types.OSErr;
  269.     (*$IF NOT GENERATINGCFM*)
  270.     INLINE PASCAL $205F, $7026, $A06E, $3E80;
  271.     (*$END*)
  272. PROCEDURE SCalcStep*(spBlkPtr: SpBlockPtr): Types.OSErr;
  273.     (*$IF NOT GENERATINGCFM*)
  274.     INLINE PASCAL $205F, $7028, $A06E, $3E80;
  275.     (*$END*)
  276. PROCEDURE SInitSRsrcTable*(spBlkPtr: SpBlockPtr): Types.OSErr;
  277.     (*$IF NOT GENERATINGCFM*)
  278.     INLINE PASCAL $205F, $7029, $A06E, $3E80;
  279.     (*$END*)
  280. PROCEDURE SSearchSRT*(spBlkPtr: SpBlockPtr): Types.OSErr;
  281.     (*$IF NOT GENERATINGCFM*)
  282.     INLINE PASCAL $205F, $702A, $A06E, $3E80;
  283.     (*$END*)
  284. PROCEDURE SUpdateSRT*(spBlkPtr: SpBlockPtr): Types.OSErr;
  285.     (*$IF NOT GENERATINGCFM*)
  286.     INLINE PASCAL $205F, $702B, $A06E, $3E80;
  287.     (*$END*)
  288. PROCEDURE SCalcSPointer*(spBlkPtr: SpBlockPtr): Types.OSErr;
  289.     (*$IF NOT GENERATINGCFM*)
  290.     INLINE PASCAL $205F, $702C, $A06E, $3E80;
  291.     (*$END*)
  292. PROCEDURE SGetDriver*(spBlkPtr: SpBlockPtr): Types.OSErr;
  293.     (*$IF NOT GENERATINGCFM*)
  294.     INLINE PASCAL $205F, $702D, $A06E, $3E80;
  295.     (*$END*)
  296. PROCEDURE SPtrToSlot*(spBlkPtr: SpBlockPtr): Types.OSErr;
  297.     (*$IF NOT GENERATINGCFM*)
  298.     INLINE PASCAL $205F, $702E, $A06E, $3E80;
  299.     (*$END*)
  300. PROCEDURE SFindSInfoRecPtr*(spBlkPtr: SpBlockPtr): Types.OSErr;
  301.     (*$IF NOT GENERATINGCFM*)
  302.     INLINE PASCAL $205F, $702F, $A06E, $3E80;
  303.     (*$END*)
  304. PROCEDURE SFindSRsrcPtr*(spBlkPtr: SpBlockPtr): Types.OSErr;
  305.     (*$IF NOT GENERATINGCFM*)
  306.     INLINE PASCAL $205F, $7030, $A06E, $3E80;
  307.     (*$END*)
  308. PROCEDURE SDeleteSRTRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
  309.     (*$IF NOT GENERATINGCFM*)
  310.     INLINE PASCAL $205F, $7031, $A06E, $3E80;
  311.     (*$END*)
  312. PROCEDURE OpenSlot*(paramBlock: Files.ParmBlkPtr; async: BOOLEAN): Types.OSErr;
  313.     EXTERNAL PASCAL;
  314. PROCEDURE OpenSlotSync*(paramBlock: Files.ParmBlkPtr): Types.OSErr;
  315.     (*$IF NOT GENERATINGCFM*)
  316.     INLINE PASCAL $205F, $A200, $3E80;
  317.     (*$END*)
  318. PROCEDURE OpenSlotAsync*(paramBlock: Files.ParmBlkPtr): Types.OSErr;
  319.     (*$IF NOT GENERATINGCFM*)
  320.     INLINE PASCAL $205F, $A600, $3E80;
  321.     (*$END*)
  322. (*  Device Manager Slot Support  *)
  323. PROCEDURE SIntInstall*(sIntQElemPtr: SQElemPtr; theSlot: INTEGER): Types.OSErr;
  324.     (*$IF NOT GENERATINGCFM*)
  325.     INLINE PASCAL $301F, $205F, $A075, $3E80;
  326.     (*$END*)
  327. PROCEDURE SIntRemove*(sIntQElemPtr: SQElemPtr; theSlot: INTEGER): Types.OSErr;
  328.     (*$IF NOT GENERATINGCFM*)
  329.     INLINE PASCAL $301F, $205F, $A076, $3E80;
  330.     (*$END*)
  331. PROCEDURE SVersion*(spBlkPtr: SpBlockPtr): Types.OSErr;
  332.     (*$IF NOT GENERATINGCFM*)
  333.     INLINE PASCAL $205F, $7008, $A06E, $3E80;
  334.     (*$END*)
  335. PROCEDURE SetSRsrcState*(spBlkPtr: SpBlockPtr): Types.OSErr;
  336.     (*$IF NOT GENERATINGCFM*)
  337.     INLINE PASCAL $205F, $7009, $A06E, $3E80;
  338.     (*$END*)
  339. PROCEDURE InsertSRTRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
  340.     (*$IF NOT GENERATINGCFM*)
  341.     INLINE PASCAL $205F, $700A, $A06E, $3E80;
  342.     (*$END*)
  343. PROCEDURE SGetSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
  344.     (*$IF NOT GENERATINGCFM*)
  345.     INLINE PASCAL $205F, $700B, $A06E, $3E80;
  346.     (*$END*)
  347. PROCEDURE SGetTypeSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
  348.     (*$IF NOT GENERATINGCFM*)
  349.     INLINE PASCAL $205F, $700C, $A06E, $3E80;
  350.     (*$END*)
  351. PROCEDURE SGetSRsrcPtr*(spBlkPtr: SpBlockPtr): Types.OSErr;
  352.     (*$IF NOT GENERATINGCFM*)
  353.     INLINE PASCAL $205F, $701D, $A06E, $3E80;
  354.     (*$END*)
  355.  
  356. (* $ALIGN RESET*)
  357. (* $POP*)
  358.  
  359.  END Slots.
  360.